// 引入defineStore
import { defineStore } from 'pinia'

// 分别暴露
export const useCountStore = defineStore('count', {
  // 其中actions里面放置的是一个一个方法，用于响应组件中的“动作”
  actions: {
    increment(value: number) {
      console.log('increment被调用了！', value)
      if (this.sum < 20) {
        // 修改数据【this就是当前的store】
        this.sum += value
      }
    },
    decrement(value: number) {
      console.log('decrement被调用了！', value)
      this.sum -= value
    },
  },
  // 真正存储数据的地方
  state() {
    return {
      sum: 6,
      school: 'atguigu',
      address: '宏福科技园',
    }
  },
  // 可以使用getters
  getters: {
    // 写法一：函数写法
    // bigSum(state) {
    //   return state.sum * 10
    // },
    // upperSchool(state) {
    //   return state.school.toUpperCase()
    // },
    // 其中参数state也可以不传递，使用this来获取参数，其中this就是state，而此时需要在返回值上加上返回类型
    upperSchool(): string {
      return this.school.toUpperCase()
    },

    // 写法二：箭头函数写法，也可以使用箭头函数。
    bigSum: (state) => state.sum * 10,
  },
})
